package  
{
	import flash.display.DisplayObject;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.geom.Rectangle;
	import flash.net.URLRequest;
	
	/**
	 * ...
	 * @author me
	 */
	public class ClObject extends Sprite 
	{
		public static var Count:int = 0;
		
		public var tarArea:Sprite;
		
		public var hp:int = 0;
		public var xSpeed:Number = 0; 
		public var ySpeed:Number = 0; 
		public var maxXSpeed:Number = 0;
		public var maxYSpeed:Number = 0;
		public var speedPower:Number = 0;
		public var speedFriction:Number = 0;
		
		public var rotateAngle:Number = 0;
		
		public var halfWidth:int = 0;
		public var halfHeight:int = 0;
		
		public var stageRef:Stage = null;
		public var DisplayContent:DisplayObject = null;
		
		public var ContentPath:String;
		
		public function ClObject(st:Stage) 
		{
			stageRef = st;
			stageRef.addChild(this);
			addEventListener(Event.ENTER_FRAME, update, false, 0, true);
		}
		
		/* Инициализация параметров. Вызывается после загрузки картинки. в FinalLoadObject*/
		protected function InitParams():void 
		{
			//hp = 0;
			//xSpeed = 0;
			//maxXSpeed = 0;
			//ySpeed = 0;
			//maxYSpeed = 0;
			//speedPower = 0;
			//speedFriction = 0;
			//rotateAngle = 0;
			//halfWidth = 0;
			//halfHeight = 0
		}
		
		/* Загрузка картинки, внедрённой в swf. Для связи исп. класс Assets */
		protected function LoadEmbededImage(imgClass:Class):void
		{
			var image:DisplayObject = new imgClass();
			FinalLoadObject(image);
		}
		
		/* Загрузка картинки по URL */
		protected function LoadImage(path:String):void
		{
			ContentPath = path;
			var loader:Loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, 
				function(e:Event):void {
					e.target.removeEventListener(e.type, arguments.callee);
					FinalLoadObject(e.target.content); 
					}, false, 0, true);
			loader.load(new URLRequest(path));
			loader = null;
		}
		
		/* Завершение загрузки контента. Вызов инициализии параметров */
		private function FinalLoadObject(incObject:DisplayObject, useCenter:Boolean=true):void
		{
			DisplayContent = this.addChild(incObject);
			/* Центрирование*/
			
			halfWidth = DisplayContent.width / 2;
			halfHeight = DisplayContent.height / 2;
			
			if (useCenter)
			{
				DisplayContent.x = -halfWidth;
				DisplayContent.y = -halfHeight;
			}
			
			/* Создание области для хита */
			SetTargetArea(0.5, false);
			InitParams();
		}
		
		/* Создание области для хита. k-размерность. 
		 * 1 - рект картинки, 2-в 2 раза больше и тд
		 * show - вывести изображение хиа-ареа. */
		protected function SetTargetArea(k:Number, show:Boolean=false):void
		{
			tarArea = new Sprite();
			
			tarArea.graphics.beginFill(0x0000FF, 1.0);
			tarArea.graphics.drawRect(-halfWidth*k, -halfHeight*k, DisplayContent.width*k, DisplayContent.height*k);
			tarArea.graphics.endFill();
			addChild(tarArea);
			tarArea.visible = show;
		}
		
		protected function update(e:Event):void
		{
			
		}
		
		/* Деструктор */
		public function removeSelf():void
		{
			/* Удаление всех обработчиков события назначенных классом */
			removeEventListener(Event.ENTER_FRAME, update);
			/* Удаление из коллекции объектов сцены */
			if (stageRef.contains(this))
				stageRef.removeChild(this);
		}
		
	}

}